#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef int DLDataType;

typedef struct ListNode
{
	DLDataType data;
	struct ListNode* next;
	struct ListNode* prev;
}ListNode;

ListNode* ListInit();
void ListDestroy(ListNode* phead);
ListNode* BuyListNode(DLDataType data);
void ListPrint(ListNode* phead);

void ListPushBack(ListNode* phead, DLDataType data);
void ListPopBack(ListNode* phead);
void ListPushFront(ListNode* phead, DLDataType data);
void ListPopFront(ListNode* phead);

ListNode* ListFind(ListNode* phead, DLDataType data);
void ListInsert(ListNode* pos, DLDataType data);
void ListErase(ListNode* pos);